// import axios from 'axios'
/**
 * 创建dom元素
 * @param {*} name dom元素名
 * @param {*} options dom属性
 */
function createElem(name, options) {
    const elem = document.createElement(name)
    elem.className = options && options.className
    return elem
}

/**
 * 将选择的图片显示到对话框中
 * @param {*} files 添加到预览列表的图片文件集
 * @param {*} orignalLen 原有预览列表的长度，结合files下标，以便可以给预览列表图片设置正确的索引
 * @param {*} $contain 指定将预览图片添加到哪个容器
 */
function imagePreview(files, orignalLen, $contain) {
    const frame = document.createDocumentFragment()
    for (let i = 0; i < files.length; i++) { // 预览新添加的图片
        const file = files[i]
        const imageType = /^image\//
            // const suffix = /(png|jpg|tif|tiff|jpge|gif|bmp)$/i
            // const fileType = file.type.split('/')[1]

        if (!imageType.test(file.type)) {
            alert('请选择图片类型上传')
            continue
        }

        // if (!fileType.match(suffix)) {
        //   alert('请选择png,jpg,tif,tiff,jpge,gif,bmp格式图片上传')
        //   continue
        // }

        // if (file.size > 3048576) {
        //   alert('图片不能超过2M')
        //   continue
        // }

        const imgOutBox = createElem('span', {
            className: 'prev-img-out-box'
        })

        const imgBox = createElem('div', {
            className: 'prev-img-box'
        })

        const handleHover = createElem('span', {
            className: 'handle-hover'
        })

        const delBtn = createElem('i', {
            className: 'del-btn'
        })

        delBtn.setAttribute('index', orignalLen + i)

        const img = createElem('img', {
            className: 'prev-img'
        })

        handleHover.appendChild(delBtn)
        imgBox.appendChild(handleHover)
        imgBox.appendChild(img)
        imgOutBox.appendChild(imgBox)
        frame.appendChild(imgOutBox)

        img.file = file

        const reader = new FileReader()
        reader.onload = (function(aImg) {
            return function(e) {
                aImg.src = e.target.result
            }
        })(img)

        reader.readAsDataURL(file)
    }

    $contain.appendChild(frame)
}

/**
 * dom事件代理
 * @param {dom} elem 设置事件处理函数的dom节点
 * @param {string} targetSelect 触发事件处理的目标节点，可以是类名或id值，无需一定用.或#指明使用的选择器是类还是id
 * @param {string} event 事件
 * @param {function} cb 事件处理函数
 */
function on(elem, targetSelect, event, cb) {
    targetSelect = targetSelect.replace(/[.#]/, '')

    elem.addEventListener(event, (e) => {
        if (e.target.className.indexOf(targetSelect) >= 0 || e.target.id === targetSelect) {
            cb(e)
        }
    })
}

/**
 * 递归寻找指定父元素
 * @param {dom} target 当前子元素
 * @param {string} selector 指定父节点选择器，可以是类名或id值，无需一定用.或#指明使用的选择器是类还是id
 */
function parentNodes(target, selector) {
    selector = selector.replace(/[.#]/, '')

    if (target.parentNode.className.indexOf(selector) >= 0 || target.parentNode.id === selector) {
        return target.parentNode
    } else {
        if (target.parentNode) {
            return parentNodes(target.parentNode, selector)
        } else {
            console.error('未找到指定父元素')
        }
    }
}

/**
 * 上传图片
 * @param {dom} editor
 * @param {Object} imgList 类数组，需要上传的图片的集合
 * @param {string} imageUploadUrl 接收上传图片的服务器url
 * @param {function} convertCb 响应数据的数据结构转换函数
 */
// function uploadpic (editor, imgList, imageUploadUrl, convertCb) {
//   /* eslint-disable no-undef */
//   let param = new FormData() // 创建form对象
//   const files = imgList
//   delete files['length']
//   for (let key in files) {
//     const file = files[key]
//     param.append('file', file, file.name) // 通过append向form对象添加数据
//   }

//   let config = {
//     headers: {'Content-Type': 'multipart/form-data'}
//   }
//   // 添加请求头
//   axios.post(imageUploadUrl, param, config).then(res => {
//     const response = typeof convertCb === 'function' && convertCb(res) || res
//     if (typeof response !== 'object' || response == null || typeof response.error === 'undefined') {
//       alert('上传出错')
//     } else {
//       if (response.error) {
//         switch (response.error) {
//           case ('filetype'):
//             alert('请选择图片格式的文件上传')
//             break
//           default:
//             alert('未知错误')
//             break
//         }
//       } else {
//         if (typeof response.pathList !== 'undefined') {
//           response.pathList.forEach(item => {
//             let tpl = '<img src="%s" />'
//             editor.insertContent(tpl.replace('%s', item))
//           })

//           editor.focus()
//         } else {
//           alert('后端数据错误')
//         }
//       }
//     }
//   })
// }

export default {
    on,
    parentNodes,
    // uploadpic,
    imagePreview
}